ci(acceptance): add hang-proof Playwright smoke gate#5623
Conversation
Re-establishes acceptance-level CI signal for 4.x, which currently runs only unit/rest/runner suites while the disabled acceptance workflow still targets 3.x + docker WebDriverIO. - test/acceptance/codecept.Playwright.smoke.js: an explicit allowlist (els/session/within) of acceptance tests that pass reliably on the 4.x promise core. 52 passed / 2 skipped / 0 failed across three consecutive local runs. - .github/workflows/acceptance-smoke.yml: runs the smoke suite on every PR with both timeout-minutes: 20 and an outer `timeout 600` (exit 124 = hang = release blocker), installs Chromium, boots the PHP test app, and uploads test/acceptance/output/ on failure. The allowlist only grows: when a promise-core fix makes an excluded file pass, move it into the glob in the same PR. Long-term goal is to gate on the full codecept.Playwright.js and delete this config. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
Closing as superseded — the long-term goal in That workflow already runs the full
It is green on No code change is needed to "achieve the goal" — it's already in place. The useful by-product of this exercise (the per-file acceptance status: |
What
Re-establishes an acceptance-level CI gate for 4.x. Today CI runs only unit/rest/runner suites; the only acceptance workflow is
acceptance-tests.yml.disabled, which still targets the3.xbranch and a docker-compose WebDriverIO setup. The exact failure class blocking 4.0 (promise-composition hangs / broken error propagation) has zero CI signal.This adds a hang-proof Playwright smoke job that runs the currently-passing subset on every PR, so the passing set can only grow.
Files
test/acceptance/codecept.Playwright.smoke.js— an explicit allowlist config (tests: './{els,session,within}_test.js') of acceptance tests that pass reliably on the 4.x promise core..github/workflows/acceptance-smoke.yml—pushto4.x+pull_requestto**;timeout-minutes: 20and an outertimeout 600(defense-in-depth;exit 124= hang); installs Chromium, boots the PHP test app, GET-polls health, runs the smoke suite, and uploadstest/acceptance/output/on failure.Discovery (local, Node 22 / Playwright 1.59 / PHP 8.5)
Each acceptance file run individually under a hard timeout:
els_test.jssession_test.jswithin_test.jsconfig_test.jscoverage_test.js@Playwrightscenarios → excludedretryTo_test.js@Playwrightscenarios → excludedThe smoke suite is 52 passed / 2 skipped / 0 failed across three consecutive local runs (~58s each; includes the
@Playwrightgherkinbefore_hook.featurevia the base config).Maintenance
The smoke glob is an allowlist: when a promise-core fix makes an excluded file pass, move it into the glob in the same PR. The long-term goal is to delete this config and gate on the full
codecept.Playwright.js.Notes for reviewers
*_test.jsfile was edited, skipped, or tagged to make the gate green.timeout-minutes: 20and the innertimeout 600.🤖 Generated with Claude Code